package com.yqg.manage.service;

import com.github.yulichang.base.MPJBaseService;
import com.yqg.manage.controller.dto.*;
import com.yqg.manage.entity.Case;

import java.util.List;
import java.util.Map;

/**
 * ICaseService 服务类
 * @author suzhuang
 * @since 2023-07-05
 */
public interface ICaseService extends MPJBaseService<Case> {


    /**
     * 首页信息来源获取数据（其他人传null参）
     * @param unitId 各单位用户查询自己单位
     * @param userId 副主任查询自己负责的单位
     * @return 数据信息
     */
    InformDTO[] inform(Long unitId,Long userId);

    /**
     * 首页案件分类排行获取数据（其他人传null参）
     * @param unitId 各单位用户查询自己单位
     * @param userId 副主任查询自己负责的单位
     * @return 数据信息
     */
    CaseCategoryRankingDTO[] caseTypeRanking(Long unitId,Long userId);

    /**
     * 首页处理结果获取数据（其他人传null参）
     * @param unitId 各单位用户查询自己单位
     * @param userId 副主任查询自己负责的单位
     * @return 数据信息
     */
    CaseResultDTO[] countResult(Long unitId,Long userId);

    /**
     * 根据输入的月数（mont）生成并填充指定月份统计信息的MontCountDTO列表。
     * @param month 需要统计的月份数量，从当前时间往前推算
     * @param unitId 各单位查询自己的
     * @param userId 副主任查询自己负责的单位
     * @return 返回一个按月填充了统计数据的MontCountDTO列表
     */
    List<MontCountDTO> monthCount(Long month,Long unitId,Long userId);

    int ifExist(String caseNum);
    /**
     * 以当前时间为基础的随机数
     */
    String num();

    /**
     * 判断案件是否应该结案
     * @param id 案件ID
     * @return ture结案、false不结案
     */
    Boolean isCaseClosed(Long id);

    /**
     * 首页是否办理获取数据（其他人传null参）
     * @param unitId 各单位用户查询自己单位
     * @param userId 副主任查询自己负责的单位
     * @return 数据信息
     */
    HandingDTO[] handing(Long unitId, Long userId);
}
